#include "threadPool.h"

// 接收并处理客户端指令
int handle(client_info_t *client_info)
{
	char pathname[4096];

	while (1)
	{
		// 接收cmd和path
		train_t train;
		bzero(&train, sizeof(train));
		recv(client_info->netfd, &train.len, sizeof(train.len), MSG_WAITALL);
		if (train.len == 0)
		{
			close(client_info->netfd);
			break;
		}
		recv(client_info->netfd, &train.data, train.len, MSG_WAITALL);
		char cmd[60] = {0};
		memcpy(cmd, train.data, train.len);
		printf("来自客户端的指令cmd：%s\n", cmd);

		bzero(pathname, sizeof(pathname));
		int length = 1;
		char *p[1024] = {NULL};

		// 判断命令
		if (!strcmp(cmd, "cd"))
		{	// 切换目录
			// 调用cd处理函数
			cd_work(client_info);
		}
		else if (!strcmp(cmd, "ls"))
		{	// 显示当前目录下所有文件的名字
			// 调用ls处理函数
			ls_work(client_info);
		}
		else if (!strcmp(cmd, "remove"))
		{	// 删除指定文件
			// 调用remove处理函数
			remove_work(client_info);
		}
		else if (!strcmp(cmd, "pwd"))
		{	// 显示当前路径
			// 调用pwd处理函数
			pwd_work(client_info);
		}
		else if (!strcmp(cmd, "gets"))
		{	// 发送用户需要下载的文件
			// 调用gets处理函数
			gets_work(client_info);
		}
		else if (!strcmp(cmd, "puts"))
		{	// 接受用户上传的文件
			// 调用puts处理函数
			puts_work(client_info);
		}
		else
		{
			printf("用户输入了错误指令！\n");
		}
	}
	return 0;
}